#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN=16;
int mp[MAXN][MAXN];
int vis[MAXN][MAXN];
int res[MAXN][MAXN];
int m,n;
bool check(int i,int j){
    if(i<0 || i>=m || j<0 || j>=n){
        return false;
    }
    return true;
}
void tran(int i,int j){
    mp[i][j]=1-mp[i][j];
}
void flip(int i,int j){
    res[i][j]=1;
    mp[i][j]=1-mp[i][j];
    if(check(i-1,j)){
        tran(i-1,j);
    }
    if(check(i+1,j)){
        tran(i+1,j);
    }
    if(check(i,j+1)){
        tran(i,j+1);
    }
    if(check(i,j-1)){
        tran(i,j-1);
    }
}
int main(void){
    scanf("%d%d",&m,&n);
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            scanf("%d",&mp[i][j]);
        }
    }
    //枚举第一行所有可能
    return 0;
}
